package cn.iocoder.yudao.module.wine.service.premiumrecord;

import javax.validation.*;
import cn.iocoder.yudao.module.wine.controller.admin.premiumrecord.vo.*;
import cn.iocoder.yudao.module.wine.dal.dataobject.premiumrecord.PremiumRecordDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;

/**
 * 保费记录 Service 接口
 *
 * @author 管理员
 */
public interface PremiumRecordService {

    /**
     * 创建保费记录
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createPremiumRecord(@Valid PremiumRecordSaveReqVO createReqVO);

    /**
     * 更新保费记录
     *
     * @param updateReqVO 更新信息
     */
    void updatePremiumRecord(@Valid PremiumRecordSaveReqVO updateReqVO);

    /**
     * 删除保费记录
     *
     * @param id 编号
     */
    void deletePremiumRecord(Long id);

    /**
     * 获得保费记录
     *
     * @param id 编号
     * @return 保费记录
     */
    PremiumRecordDO getPremiumRecord(Long id);

    /**
     * 获得保费记录分页
     *
     * @param pageReqVO 分页查询
     * @return 保费记录分页
     */
    PageResult<PremiumRecordRespVO> getPremiumRecordPage(PremiumRecordPageReqVO pageReqVO);

    /**
     * 获取担保费记录
     * @param userId
     * @param orderId
     */
    PremiumRecordDO getPremiumByOrder(Long userId, Long orderId);

    /**
     * 根据交易号查询订单
     * @param tradeNo
     * @return
     */
    PremiumRecordDO getPremiumByTradeNo(String tradeNo);

    /**
     * 修改支付状态
     * @param premiumByOrder
     */
    void updateStatus(PremiumRecordDO premiumByOrder);
}
